#include<stdio.h>
#include<stdlib.h>
int dec(const void*a,const void*b)
{
    return *(int*)(b)-*(int*)(a);
}
int f(int n)
{
    return n<10?n:f(n/10)+(n%10);
}
int mycmp(const void*a,const void*b)
{
    int flag= f(*(int*)(a))-f(*(int*)(b));
    if(flag)
        return flag;
    return *(int*)(a)-*(int*)(b);
}
int inc(const void*a,const void*b)
{
    return *(int*)(a)-*(int*)(b);//default sort cmp
}
void print(int a[],int n)
{

    int i;
    for(i=0; i<n; i++)
        printf("%d ",a[i]);
    printf("\n");

}
int main()
{
    int a[]= {123,1,23,12,3,12,3,321,6,12,3,9};
    int n=sizeof(a)/sizeof(a[0]);
    qsort(a,n,sizeof(a[0]),mycmp);
    print(a,n);
    return 0;
}

